package cn.tedu.oop;
/**本来用于测试构造方法*/
public class TestConstructor {
    public static void main(String[] args) {
        //4.创建Person类对象并进行测试
        /**1.每一个类中默认都会存在一个没有参数的构造方法
         * 每次new（实例化）对象时，都会自动触发这个类对应的构造方法来帮我们创建对象*/
        Person p=new Person();
        System.out.println(p.name);
        System.out.println(p.age);
        System.out.println(p.address);
        p.eat();
        //6.创建Person类的第2个对象
        /**3.每次创建对象时，都会执行构造方法
         * 构造方法的作用：用来创建对象的*/
        Person p2=new Person();
        //8.创建Person类的第3个对象，要使用含参构造创建
        Person p3=new Person(88);
        //10.使用全参构造创建Person类的第4个对象
        Person p4=new Person("李逵",32,"柳树下");
        //11.查看p4对象的属性值是否赋值成功
        System.out.println(p4.name);
        System.out.println(p4.age);
        System.out.println(p4.address);
        //12.查看p3对象的属性值是否赋值成功
        System.out.println(p3.name);
        System.out.println(p3.age);
        System.out.println(p3.address);


    }
}
//1.创建Person类，用来描述人这一类事物
class Person{
    //2.提供Person类的属性
    String name;
    int age;
    String address;

    /**2.构造方法的格式：没有返回值类型（即连void都没有）
     * 并且与本类类名同名的方法*/
    //5.创建本类的无参构造
    /**4.如果提供了其他的构造函数，默认的无参构造会被覆盖，就不存在了
     * 所以，如果想不传参数创建对象的话，需要我们手动提供这个类的无参构造*/
    public Person(){
        System.out.println("我是Person类的无参构造");
    }
    //7.创建本类的含参构造
    public Person(int n){
        System.out.println("我是Person类的含参构造"+n);
    }
    //9.创建本类的全参构造

    public Person(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
        System.out.println("我是Person类的全参构造");
    }

    //3.功能-方法
    public void eat(){
        System.out.println("干饭不积极，思想有问题~");
    }
}
